/**
* Copyright @ 2023 iAuto (Shanghai) Co., Ltd.
* All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are NOT permitted except as agreed by
* iAuto (Shanghai) Co., Ltd.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*/


import {IAntdTablePageParams} from './type';

// 场景来源（0-原创，1-商城，2-预制）
export type ISourceType = 0 | 1 | 2;
// 发布状态（0-未发布，1-已发布）
export type IDeployStatus = 0 | 1;
// 周期内执行次数（1-单次，-1-无限制）
export type ICycleExecution = 1 | -1;
// 激活状态（0-未激活 1-已激活）
export type IStatus = 0 | 1 | 2;
// 工具创建方式（0-web，1-app，2-车辆）
export type IToolSourceType = 0 | 1 | 2;
//官方场景发布状态
export type ISceneType = 0 | 1 | 2;
//官方场景发布历史（0-上架审核中，1-下架审核中，2-上架成功，3-上架失败，4-下架成功，5-下架失败）
export type ISceneHistoryType = 0 | 1 | 2| 3| 4| 5;


// 是否是官方场景，0-否,1-是
export type IOfficialScene = 0 | 1;
// 手机端是否可执行，0-否,1-是
export type IExecutedOnPhone = 0 | 1;
// 车机端是否二次确认，0-否,1-是
export type IDoubleCheckOnVehicle = 0 | 1;

export type IVehicleScenesItem = {
  //  必须 场景ID
  scenarioUid: string;
  // 必须 场景名称
  cnName: string;
  // 必须 场景描述
  cnDescription: string;
  // 必须 车系编码
  seriesCode: string;
  // 必须 车系名称
  seriesName: string;
  // 必须 车型编码
  modelCode: string;
  // 必须 车型名称
  modelName: string;
  // 必须 发布状态 0（默认）-未发布，1-已发布
  deployStatus: IDeployStatus;
  // 必须 场景来源0（默认）-原创，1-商城，2-预制
  sourceType: ISourceType;
  // 必须 icon图标
  iconUrl: string;
  // 必须 背景图
  backgroundPicUrl: string;
};

export type IScenesItem = {
  //  必须 场景ID
  scenarioUid: string;
  // 必须 场景名称
  cnName: string;
  // 必须 场景图标UUID
  iconUuid: string;
  // 必须 场景图标Url
  iconUrl: string;
  // 必须 场景背景图UUID
  backgroundPicUuid: string;
  // 必须 场景背景图Url
  backgroundPicUrl: string;
  // 必须 场景描述
  cnDescription: string;
  // 必须 发布状态 0（默认）-未发布，1-已发布
  deployStatus: IDeployStatus;
  // 必须 车系编码
  seriesCode: string;
  // 必须 车型编码
  modelCode: string;
};

export type IVehicleScenesCategoryItem = {
  //  必须 分类主键ID
  id: string;
  // 必须 唯一标识
  uuid: string;
  // 必须 分类名称
  name: string;
  // 必须 描述
  description: string;
};

export type IVehicleScenesCategoryList = IVehicleScenesCategoryItem[];

// 车主列表查询
export interface IVehicleScenesListParam extends IAntdTablePageParams {
  sourceType?: ISourceType; // 0-原创，1-商城，2-预制（查询原创场景时传0，我的场景不传）
  cnNameLike?: string; // 场景名称模糊查询
  deployStatus?: IDeployStatus; // 发布状态 1-已发布
}

// 开发者列表查询
export interface IScenesListParam extends IAntdTablePageParams {
  cnNameLike?: string; // 场景名称模糊查询
  deployStatus?: IDeployStatus; // 发布状态 1-已发布
}

// 车主列表
export type IVehicleScenesList = IVehicleScenesItem[];

//开发者列表
export type IScenesList = IScenesItem[];

// export type IVehicleScenesDetail = {
//   // 必须 场景Uid
//   scenarioUid: string;
//   //  非必须 场景分类名称
//   categoryName?: string;
//   //  非必须 场景分类UUID
//   categoryUuid?: string;
//   // 必须 车系名称
//   seriesName: string;
//   // 必须 车系编码
//   seriesCode: string;
//   // 必须 车型名称
//   modelName: string;
//   // 必须 车型编码
//   modelCode: string;
//   // 必须 场景名称
//   cnName: string;
//   // 必须 场景图标UUID
//   iconUuid: string;
//   // 必须 场景图标Url
//   iconUrl: string;
//   // 必须 场景背景图UUID
//   backgroundPicUuid: string;
//   // 必须 场景背景图Url
//   backgroundPicUrl: string;
//   // 必须 这辆编码
//   vin: string;
//   // 必须 场景描述图片
//   descPictures: {
//     // 必须 图片Uuid
//     picUuid: string;
//     // 必须 图片Url
//     picUrl: string;
//   }[];
//   //  非必须 视频UUID
//   videoUuid?: string;
//   //  非必须 视频Url
//   videoUrl: string;
//   //  非必须 视频名字
//   videoName: string;
//   //  非必须 场景文件uuid
//   scenarioFileUuid: string;
//   //  非必须 场景描述
//   cnDescription: string;
//   // 必须 发布状态 0-未发布，1-已发布
//   deployStatus: IDeployStatus;
//   // 必须 场景来源 0-原创，1-商城，2-预制
//   sourceType: ISourceType;
//   //  非必须 商城商品编码
//   goodsCode?: string;
//   //  非必须 开发者id
//   developerId?: string;
//   //  非必须 开发者名字
//   developerName?: string;
//   // 必须 场景标签
//   scenarioTag: string;
//   // 必须 创建时间
//   createTime: string;
//   // 必须 更新时间
//   updateTime: string;
// };

export type IScenesDetail = {
  //  必须 场景ID
  sceneUuid: string;
  // 必须 引擎id
  engineId: string;
  //  非必须 场景分类名称
  categoryName?: string;
  //  非必须 场景分类UUID
  categoryUuid?: string;
  // 必须 品牌名称
  brandName: string;
  // 必须 品牌编码
  brandCode: string;
  // 必须 车系名称
  seriesName: string;
  // 必须 车系编码
  seriesCode: string;
  // 必须 车型名称
  modelName: string;
  // 必须 车型编码
  modelCode: string;
  // 必须 场景名称
  name: string;
  // 必须 场景图标Url
  iconUrl: string;
  // 必须 场景背景图Url
  backgroundPicUrl: string;
  // 必须 场景文件UUID
  sceneFileUuid: string;
  //  非必须 场景描述
  description?: string;
  // 必须 是否是官方场景，0-否,1-是
  executedOnPhone: IExecutedOnPhone;
  // 必须 车机端是否二次确认，0-否,1-是
  doubleCheckOnVehicle: IDoubleCheckOnVehicle;
  // 必须 是否是官方场景，0-否,1-是
  officialScene: IOfficialScene;
  // 必须 周期内执行次数（1-单次，-1-无限制）
  cycleExecution: ICycleExecution;
  //  必须 开发者id
  developerId: string;
  //  必须 开发者名字
  developerName: string;
  // 必须 更新时间
  updateTime: string;
};

export type IVehicleScenesBase = {
  // 必须 车系编码(编辑时不可修改)
  seriesCode: string;
  // 必须 车系名称(编辑时不可修改)
  seriesName: string;
  // 必须 车型编码(编辑时不可修改)
  modelCode: string;
  // 必须 车型名称(编辑时不可修改)
  modelName: string;
  //  非必须 场景分类UUID
  categoryUuid?: string;
  //  非必须 场景分类名称
  categoryName?: string;
  // 必须   场景名（每位车主场景名唯一不重复）
  cnName: string;
  //  非必须 场景简介
  cnDescription: string;
  // 必须 场景图标UUID
  iconUuid: string;
  // 必须 场景图标Url
  iconUrl: string;
  // 必须 场景背景图UUID
  backgroundPicUuid: string;
  // 必须 场景背景图Url
  backgroundPicUrl: string;
  // 必须 场景描述图片
  descPictures: {
    // 必须 图片Uuid
    picUuid: string;
    // 必须 图片Url
    picUrl: string;
    // 必须 权重
    // weight: number;
  }[];
  //  非必须 视频UUID
  videoUuid?: string;
  //  非必须 视频Url
  videoUrl?: string;
  //  非必须 视频名字
  videoName: string;
  // 必须 场景文件uuid
  scenarioFileUuid: string;
};

export type IScenesCreate = IVehicleScenesBase;

export interface IVehicleScenesCreate extends IVehicleScenesBase {
  // 必须 这辆编码
  vin: string;
  //  非必须 场景标签
  scenarioTag: string;
}

export interface IScenesEdit extends IVehicleScenesBase {
  // 必须 场景Uid
  scenarioUuid: string;
}

export interface IVehicleScenesEdit extends IVehicleScenesBase {
  // 必须 场景Uid
  scenarioUuid: string;
  // 必须 这辆编码
  vin: string;
  //  非必须 场景标签
  scenarioTag: string;
}

export type IIConItem = {
  // 必须 唯一标识
  uuid: string;
  //必须 图标名称
  name: string;
  // 必须 图标文件Id(文件服务uuid)
  fileUuId: string;
  // 必须 图标文件Url
  url: string;
  // 必须 创建时间
  createTime: string;
  // 必须 更新时间
  updateTime: string;
};

export type IUser = {
  // 非必须 车辆编码
  vin: string;
  // 非必须 车系编码
  seriesCode: string;
  // 非必须 车型编码
  modelCode: string;
  // 非必须 车主id
  oneId: string;
};

// 图标
export type IIconList = IIConItem[];

export type IBackgroundItem = IIConItem;

export type IBackgroundList = IBackgroundItem[];

// 开发者场景—场景分类数据查询
export type ICategoryItem = {
  // 必须 分类主键ID
  id: number;
  // 必须 唯一标识
  uuid: string;
  // 必须 分类名称
  name: string;
  // 必须 描述
  description: string;
};

export type ICategoryList = ICategoryItem[];

//官方场景
export type ISceneOfficial = {
  sceneUuid:string,
  // 必须
  engineId:string,
  // 非必须
  name:string,
  // 必须
  iconUrl:string,
  // 必须
  backgroundPicUrl:string,
  // 必须
  description:string,
  // 非必须
  deployStatus:ISceneType,
  // 必须
};

//官方场景发布历史
export type IReleaseHistory = {
  sceneUuid:string,
  // 必须
  sceneRecordUuid:string,
  // 必须
  categoryName:string,
  // 必须
  seriesName:string,
  // 必须
  modelName:string,
  // 必须
  brandName:string,
  // 必须
  name:string,
  // 必须
  description:string,
  // 非必须
  auditStatus:ISceneHistoryType,
  // 必须
  rejectReason:string,
  // 非必须
  applyTime:string,
  // 必须
}
